package br.com.vemtransporte;

import java.util.ArrayList;

import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.TextView;
import br.com.vemtransporte.basicas.Linha;
import br.com.vemtransporte.basicas.Usuario;
import br.com.vemtransporte.fachada.Fachada;

public class BaseAdapterLinhas extends BaseAdapter {
	
	private ArrayList<Linha> linhas;
	private Context context;
	
	public BaseAdapterLinhas(Context context, ArrayList<Linha> linhas)
	{
		this.context = context;
		this.setLinhas(linhas);		
	}
	
	private Handler handler = new Handler() {
		@Override
		public void handleMessage(Message msg) {
			notifyDataSetChanged();
            super.handleMessage(msg);
		}
	};

	public int getCount() {		
		return this.linhas.size();
	}

	public Object getItem(int arg0) {
		return this.linhas.get(arg0);
	}

	public long getItemId(int arg0) {
		return arg0;
	}

	public View getView(int position, View convertView, ViewGroup parent) {
		final Linha l = (Linha) getItem(position);
		
		final Usuario usuarioLogado = Fachada.getInstance().getUsuarioLogado();		
		
		if (convertView == null) {
			LayoutInflater infalInflater = (LayoutInflater) context
					.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
			convertView = infalInflater.inflate(R.layout.grouplistlinhacadastro,
					null);			
		}
		
		final CheckBox checkBoxLinhaSelecionada = (CheckBox) convertView.findViewById(R.id.checkBoxLinhaSelecionada);		
		checkBoxLinhaSelecionada.setOnClickListener(new OnClickListener() {
			
			public void onClick(View v) {
				if (checkBoxLinhaSelecionada.isChecked())
				{
					try {
						if (Fachada.getInstance().CadastrarLinhaUsuario(usuarioLogado, l))
						{
							boolean encontrouLinha = false;
							for (Linha item : usuarioLogado.getLinhas()) {
								if (item.getId() == l.getId())
								{
									encontrouLinha = true;																		
									break;
								}
							}							
							if (!encontrouLinha)
							{
								usuarioLogado.getLinhas().add(l);
							}
							l.setUsuario(Fachada.getInstance().getUsuarioLogado());
						}
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
				else{
					try {
						if (Fachada.getInstance().RemoverLinhaUsuario(usuarioLogado, l))
						{
							for (Linha item : usuarioLogado.getLinhas()) {
								if (item.getId() == l.getId())
								{
									usuarioLogado.getLinhas().remove(item);									
									break;
								}
							}
							 
							l.setUsuario(null);
						}
					} catch (Exception e) {
						e.printStackTrace();
					}					
				}								
				
			}
		});
			
			
		
		for (Linha linhaUsuario : usuarioLogado.getLinhas()) {
			if (linhaUsuario.getId() == l.getId())
			{
				checkBoxLinhaSelecionada.setChecked(true);
				break;
			}
			else
			{
				checkBoxLinhaSelecionada.setChecked(false);
			}
		}				
		
		TextView textViewNumeroLinhaUsuario = (TextView) convertView.findViewById(R.id.textViewNumeroLinhaUsuarioCadastro);
		textViewNumeroLinhaUsuario.setText(l.getNumero());
		
		TextView textViewNomeLinhaUsuario = (TextView) convertView.findViewById(R.id.textViewNomeLinhaUsuarioCadastro);
		textViewNomeLinhaUsuario.setText(l.getNome());		
		
		return convertView;
	}

	public void setLinhas(ArrayList<Linha> linhas) {
		this.linhas = linhas;
	}

	public ArrayList<Linha> getLinhas() {
		return linhas;
	}
	

}
